package com.ruoyi.project.system.service;

import com.ruoyi.project.system.domain.Tasks;
import java.util.Map;

/**
 * 任务推送服务接口
 * 
 * @author ruoyi
 * @date 2025-06-16
 */
public interface ITaskPushService {

    /**
     * 根据任务信息推送消息给任务接收人
     * 
     * @param taskId         任务ID
     * @param messageTitle   推送标题
     * @param messageContent 推送内容
     * @param extras         额外参数
     * @return 推送结果
     */
    boolean pushMessageToTaskRecipients(Long taskId, String messageTitle, String messageContent,
            Map<String, Object> extras);

    /**
     * 根据任务对象推送消息给任务接收人
     * 
     * @param task           任务对象
     * @param messageTitle   推送标题（为空时使用任务标题）
     * @param messageContent 推送内容（为空时使用任务描述）
     * @param extras         额外参数
     * @return 推送结果
     */
    boolean pushMessageToTaskRecipients(Tasks task, String messageTitle, String messageContent,
            Map<String, Object> extras);

    /**
     * 推送任务提醒消息
     * 
     * @param taskId 任务ID
     * @return 推送结果
     */
    boolean pushTaskReminder(Long taskId);

    /**
     * 推送任务创建通知
     * 
     * @param taskId 任务ID
     * @return 推送结果
     */
    boolean pushTaskCreationNotice(Long taskId);

    /**
     * 根据用户ID列表推送消息
     * 
     * @param userIds        用户ID列表
     * @param messageTitle   推送标题
     * @param messageContent 推送内容
     * @param extras         额外参数
     * @return 推送结果
     */
    boolean pushMessageToUsers(Long[] userIds, String messageTitle, String messageContent, Map<String, Object> extras);
}